#ifndef EVENTMGMT_H
#define EVENTMGMT_H

#include <string>
#include <map>
#include <list>

#include "eventhandlerdata.h"

class EventHandlerData;

using namespace std;

class EventManager;

typedef void (*EventHandler)(EventHandlerData);
typedef list<EventHandler> EventHandlersList;
typedef map<string,EventHandlersList> EventHandlersMap;


class EventManager {

    EventHandlersList* _getEventHandlers(string eventIdentifier);
    
    EventHandlersMap eventHandlers;

    public : 
    void declareEvent(string);
    void fireEvent(string,EventHandlerData*);

    EventManager();
    void registerEventHandler(string, EventHandler);   

};


#endif
